//
//  TYZBaseTableViewController.m
//  DriveSchoolCoach
//
//  Created by TangBin on 2019/7/4.
//  Copyright © 2019 TangBin. All rights reserved.
//

#import "TYZBaseTableViewController.h"

@interface TYZBaseTableViewController ()
/**
 *  tableview类型 UITableViewStylePlain
 */
//@property (nonatomic, assign) BOOL isStyle;
@end

@implementation TYZBaseTableViewController

- (void)dealloc
{
    _baseTableView.delegate = nil;
    _baseTableView.dataSource = nil;
#if !__has_feature(objc_arc)
    [_baseTableView release], _baseTableView = nil;
    [_baseList release], _baseList = nil;
    [super dealloc];
#endif
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    return [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil isStylePlain:YES];
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil isStylePlain:(BOOL)isStylePlain
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        _isStyle = isStylePlain;
    }
    return self;
}

- (id)init
{
    return [self initWithStylePlain:YES];
}

- (id)initWithStylePlain:(BOOL)isStylePlain
{
    self = [super init];
    if (self)
    {
        _isStyle = isStylePlain;
    }
    return self;
}

#pragma mark start override
- (void)initWithVar
{
    [super initWithVar];
    
    [self initWithDataSource];
    
}

- (void)initWithNavBar
{
    [super initWithNavBar];
    
}

- (void)initWithDataSource
{
    
}

- (void)initWithSubView
{
    [super initWithSubView];
    
    [self initWithBaseTableView];
    
    [self initWithHeaderView];
    
    [self initWithFooterView];
}

//- (void)noDataViewHidden:(BOOL)hidden
//{
//    debugLogFrameName(@"tableview", self.baseTableView.frame);
//    [super noDataViewHidden:hidden];
//    self.noDataView.size = self.baseTableView.size;
//    self.noDataView.centerY = self.baseTableView.height * 0.5;
//}

#pragma mark end override

#pragma mark start public methods
#pragma mark start init define
- (void)initWithBaseTableView
{
    static CGFloat statusHeight;
    static CGRect bounds;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        bounds = [[UIScreen mainScreen] bounds];
        statusHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
    });
    CGFloat navBarHeight = self.navigationController.navigationBar.bounds.size.height;
    //    NSLog(@"statusHeight=%.2f; navBarHeight=%.2f", statusHeight, navBarHeight);
    CGRect frame = CGRectMake(0.0f, 0.0f, bounds.size.width, bounds.size.height - statusHeight - navBarHeight);
    if (_isStyle)
    {
        _baseTableView = [[TYZBaseTableView alloc] initWithFrame:frame style:UITableViewStylePlain];
    }
    else
    {
        _baseTableView = [[TYZBaseTableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
    }
    //    _baseTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    // 右边的字母的颜色
    //    self.baseTableView.sectionIndexColor = UIColorFromRGB(0x555555);
    
    // ios11以后，setAutomaticallyAdjustsScrollViewInsets 禁用了，下面是替代方法
    /*
     当升级到iOS 11的时候,发现UIScrollView 有莫名其妙的偏移了 可是明明设置了
     automaticallyAdjustsScrollViewInsets
     这是因为iOS 11为UIScrollView 添加了新的属性contentInsetAdjustmentBehavior 这是一个枚举
     
     找到UIScrollViewContentInsetAdjustmentNever 从来不自动调整和automaticallyAdjustsScrollViewInsets = NO 是一个功效
     */
    if (@available(iOS 11.0, *))
    {
        self.baseTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        _baseTableView.estimatedRowHeight = 0;
        _baseTableView.estimatedSectionHeaderHeight = 0;
        _baseTableView.estimatedSectionFooterHeight = 0;
    }
    
    if (@available(iOS 15.0, *))
    {
        self.baseTableView.sectionHeaderTopPadding = 0;
    }
    
    _baseTableView.delegate = self;
    _baseTableView.dataSource = self;
    _baseTableView.backgroundColor = [UIColor colorWithHexString:@"#f7f9fc"];
    [self.view addSubview:_baseTableView];
    //    _baseTableView.estimatedRowHeight
    //    _baseTableView.rowHeight = UITableViewAutomaticDimension;
    
    /*
     // iOS11 新特性，如果目前项目中没有使用estimateRowHeight属性，在iOS11的环境下就要注意了，因为开启Self-Sizing之后，tableView是使用estimateRowHeight属性的，这样就会造成contentSize和contentOffset值的变化，如果是有动画是观察这两个属性的变化进行的，就会造成动画的异常，因为在估算行高机制下，contentSize的值是一点点地变化更新的，所有cell显示完后才是最终的contentSize值。因为不会缓存正确的行高，tableView reloadData的时候，会重新计算contentSize，就有可能会引起contentOffset的变化。iOS11下不想使用Self-Sizing的话，可以通过以下方式关闭
     _chatTableView.estimatedRowHeight = 0;
     _chatTableView.estimatedSectionHeaderHeight = 0;
     _chatTableView.estimatedSectionFooterHeight = 0;
     */
    //    if (@available(iOS 11.0, *))
    //    {
    //        _baseTableView.estimatedRowHeight = 0;
    //        _baseTableView.estimatedSectionHeaderHeight = 0;
    //        _baseTableView.estimatedSectionFooterHeight = 0;
    //    }
    
}

- (void)initWithHeaderView
{
    
}

- (void)initWithFooterView
{
    self.baseTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
}

#pragma mark end init define


#pragma mark end public methods

#pragma mark start delegate
#pragma mark start UITableViewDataSource, UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    TYZBaseTableViewCell *cell = [TYZBaseTableViewCell cellForTableView:tableView];
    
    
    return cell;
}

// 字母放在右边，点击可以显示具体的区域
//- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
//{
//    if (tableView == self.baseTableView)
//    {
//        return _firstLetterList;
//    }
//    return  nil;
//}

//- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
//{
//    if (section == 0 && tableView != self.searchDisplayController.searchResultsTableView)
//    {
//        return nil;
//    }
//    if (tableView == self.searchDisplayController.searchResultsTableView)
//    {
//        return nil;
//    }
//    return self.firstLetterList[section - 1];
//}

// titleForHeaderInSection 上的文字的颜色和大小
//-(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
//{
//    if (tableView == self.baseTableView)
//    {
//        UITableViewHeaderFooterView *footer = (UITableViewHeaderFooterView *)view;
//        [footer.textLabel setTextColor:UIColorFromRGB(0x8e8e93)];
//        footer.textLabel.font = [UIFont fontWithName:@"Arial" size:13.0];
//    }
//}



@end
